package com.bridgeintelligent.tag.combination.service;

import com.alibaba.fastjson.JSONArray;
import com.bridgeintelligent.tag.combination.entity.Result;
import com.bridgeintelligent.tag.combination.pojo.Combination;
import com.bridgeintelligent.tag.combination.pojo.CombinationModel;
import com.bridgeintelligent.tag.combination.pojo.Filter;
import com.bridgeintelligent.tag.combination.pojo.FilterGroup;

import java.util.List;

/**
 * 客群服务层接口
 */
public interface CombinationService {

    /**
     * 校验客群名是否重复
     *
     * @param combinationName
     * @return
     */
    boolean checkCombinationName(String combinationName);

    /**
     * 根据组合标签id查找组合标签名称
     *
     * @param combiantionId
     * @return
     */
    String findCombinationNameById(String combiantionId);

    /**
     * 获取组合标签列表
     *
     * @param pageNumber
     * @param pageSize
     * @param combinationName
     * @return
     */
    Result list(Integer pageNumber, Integer pageSize, String combinationName, String status, String uptTimeStart, String uptTimeEnd);


    /**
     * 新增组合标签
     *
     * @param combinationName
     * @param combinationDes
     * @param scenarious
     * @param departId
     * @param jsonArrays
     */
    void addCombination(String combinationName, String defaultCode,String combinationDes, String scenarious,String departId, JSONArray jsonArrays,String defaultName,String renew,String rule,String manager);

    /**
     * 新增组合标签-增加业务类型字段
     * @param combinationName
     * @param combinationDes
     * @param scenarious
     * @param departId
     * @param jsonArrays
     * @param defaultName
     * @param renew
     * @param rule
     * @param manager
     * @param businessType
     */
    void addCombination(String combinationName, String defaultCode, String combinationDes, String scenarious,String departId,
                        JSONArray jsonArrays,String defaultName,String renew,String rule,String manager,
                        String businessType);

    /**
     * 新增组合标签
     * @param combinationModel
     */
    void addCombination(CombinationModel combinationModel);

    /**
     * 删除组合标签
     *
     * @param combinationId
     */
    void delCombination(String combinationId);

    /**
     * 修改组合标签
     *
     * @param combinationId
     * @param combinationName
     * @param combinationDes
     * @param scenarious
     * @param departId
     * @param jsonArrays
     */
    void updateCombination(String combinationId,String defaultCode, String combinationName, String combinationDes, String scenarious,String departId, JSONArray jsonArrays,String defaultName,String renew,String rule,String manager);

    /**
     * 修改组合标签-增加业务类型
     * @param combinationId
     * @param combinationName
     * @param combinationDes
     * @param scenarious
     * @param departId
     * @param jsonArrays
     * @param defaultName
     * @param renew
     * @param rule
     * @param manager
     * @param businessType
     */
    void updateCombination(String combinationId,String defaultCode, String combinationName, String combinationDes, String scenarious,
                           String departId, JSONArray jsonArrays,String defaultName,String renew,String rule,
                           String manager, String businessType);

    /**
     * 更新组合标签
     * @param combinationModel
     */
    void updateCombination(CombinationModel combinationModel);

    /**
     * 查询单个组合标签详细信息
     *
     * @param combinationId
     * @return
     */
    Combination findOneById(String combinationId);

    //查询条件组
    List<FilterGroup> findFilterGroup(String parentId, String combinationId, List<Filter> filters);

    //组合标签同步到基础标签
    void addDimData(String combinationId);

    /**
     * 保存组合标签DATA
     * @param combinationId
     */
    void saveCombinationData(String combinationId);

    /**
     * 删除SQL数据
     * @param combinationId
     */
    void delCombinationData(String combinationId);


}
